package xorm

import (
	"fmt"
	"gitee.com/stevenchin/gin_study/xorm/initxorm"
	"github.com/gin-gonic/gin"
	"net/http"
)

/*
ORM方式删除数据。支持执行SQL与ORM两种方式查询数据
*/

//一. ORM方式更新数据。
//	1. 删除数据Delete方法。TIPS：当删除时，如果user中包含有bool,float64或者float32类型，有可能会使删除失败
func Delete(ctx *gin.Context) {

	param := ctx.Param("select")

	if param == "id" {
		// Delete的返回值第一个参数为删除的记录数，第二个参数为错误
		// DELETE FROM `basic` WHERE `Id`=? [1]
		i, _ := initxorm.Engine.ID(1).Delete(new(basic))
		ctx.String(http.StatusOK, fmt.Sprintf("delete num: %d", i))
	}
	if param == "struct_id" {
		i2 := new(basic)
		i2.Id = 2
		// DELETE FROM `basic` WHERE `Id`=? [2]
		i, _ := initxorm.Engine.Delete(i2)
		ctx.String(http.StatusOK, fmt.Sprintf("delete num: %d", i))
	}
	if param == "struct_param" {
		i2 := new(basic)
		i2.Name = "steven update2"
		// DELETE FROM `basic` WHERE `Name`=? [steven update2]
		i, _ := initxorm.Engine.Delete(i2)
		ctx.String(http.StatusOK, fmt.Sprintf("delete num: %d", i))
	}
}

// 2. 软删除Deleted。如有需要可自行查阅：https://www.kancloud.cn/xormplus/xorm/167118

//二. 执行SQL命令删除数据。这里不做介绍，如有需要可自行查阅：https://www.kancloud.cn/xormplus/xorm/167119
